/*********************************** 封装请求相关方法工具类 **************************************/
import axios from 'axios';

//导入NProgress加载精度条
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
// 初始化一个axios对象
var instance = axios.create({
    // 接口地址根路径
    baseURL: 'http://localhost:8899',
    //超时时间
    timeout: 30000
});


// 添加请求拦截器
instance.interceptors.request.use(
    function (config) {
        // 在发送请求之前做些什么
        NProgress.start();
        return config;
    }, function (error) {
        // 对请求错误做些什么
        NProgress.done();
        return Promise.reject(error);
    });

// 添加响应拦截器
instance.interceptors.response.use(
    function (response) {
        // 对响应数据做点什么
        NProgress.done();
        return response;
    }, function (error) {
        // 对响应错误做点什么
        NProgress.done();
        return Promise.reject(error);
    });

//创建一个get请求方法
//get请求需要对参数进行多包一层
let get = async function (url, params) {
    let { data } = await instance.get(url, { params });
    return data;
}

//创建一个post请求方法
let post = async function (url, params) {
    let { data } = await instance.post(url, params);
    return data;
}

//将token信息保存到请求头的方法
// `headers` 是即将被发送的自定义请求头
let setToken = function(){
    instance.defaults.headers.common['AUTH_TOKEN'] = sessionStorage.getItem('AUTH_TOKEN');
}
//导出get，post方法
export {
    get,
    post,
    setToken
}